package cn.stylefeng.guns.sys.modular.system.service;

import cn.stylefeng.guns.base.pojo.page.LayuiPageInfo;
import cn.stylefeng.guns.sys.modular.system.entity.AttendEmployeeMonth;
import cn.stylefeng.guns.sys.modular.system.model.params.AttendAuditDdSupervisorParam;
import cn.stylefeng.guns.sys.modular.system.model.params.AttendEmployeeMonthParam;
import cn.stylefeng.guns.sys.modular.system.entity.AttendAuditBtyArchives;
import cn.stylefeng.guns.sys.modular.system.entity.AttendAuditBtyArea;
import cn.stylefeng.guns.sys.modular.system.model.params.AttendAuditBtyArchivesParam;
import cn.stylefeng.guns.sys.modular.system.model.result.AttendAuditBtyArchivesCountShop;
import cn.stylefeng.guns.sys.modular.system.model.result.AttendAuditBtyArchivesResult;
import cn.stylefeng.guns.sys.modular.system.model.result.AttendAuditManagerSetResult;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  员工身份表
 * </p>
 *
 * @author wjk
 * @since 2021-09-15
 */
public interface AttendAuditBtyArchivesService extends IService<AttendAuditBtyArchives> {

    /**
     * 常用的：
     * 根据店名，和操作这个店的手机号，获取这个人，是不是有查看这个店员工手机号的权限
     * @param account
     * @param dm
     * @return map: success:[true,false] ,zw:[运营经理，督导，大店长，考勤店长]
     */
    Map<String,String> commonGetEmplistPermissions(String account,String dm);
    /**
     * 常用的：
     * 根据店名，和操作这个店的手机号，获取这个人，是不是有查看这个店员工手机号的权限
     * @param account
     * @param dm
     * @return map: success:[true,false] ,zw:[督导，大店长]
     */
    Map<String,String> commonGetEmplistPermissionsOnlyddDdz(String account,String dm);


    /**
     * 新增
     *
     * @author wjk
     * @Date 2021-09-15
     */
    void add(AttendAuditBtyArchivesParam param);

    /**
     * 删除
     *
     * @author wjk
     * @Date 2021-09-15
     */
    void delete(AttendAuditBtyArchivesParam param);

    /**
     * 更新
     *
     * @author wjk
     * @Date 2021-09-15
     */
    void update(AttendAuditBtyArchivesParam param);

    /**
     * 查询单条数据，Specification模式
     *
     * @author wjk
     * @Date 2021-09-15
     */
    AttendAuditBtyArchivesResult findBySpec(AttendAuditBtyArchivesParam param);

    /**
     * 查询列表，Specification模式
     *
     * @author wjk
     * @Date 2021-09-15
     */
    List<AttendAuditBtyArchivesResult> findListBySpec(AttendAuditBtyArchivesParam param);

    /**
     * 查询分页数据，Specification模式
     *
     * @author wjk
     * @Date 2021-09-15
     */
     LayuiPageInfo findPageBySpec(AttendAuditBtyArchivesParam param);

    /**
     * 获取列表(这是为了同步相应月份的数据，获取当月的员工档案数据)
     * @param paramCondition
     * @return
     */
    public List<AttendEmployeeMonth> getAttendEmployeeMonthBaseList(AttendEmployeeMonthParam paramCondition);

    /**
     *  将获取到的员工数据导入到月度员工档案表中；
     * @return
     */
    public int intoAttendEmployeeMonthList();

    /**
     * 根据督导的手机号码，返回督导下的所有的店；
     * @author wjk
     * @Date 2021-09-15
     */
    List<AttendAuditBtyArea> getShopListByDdPhone(String account,String shopName);

    /**
     * （督导设置店长页面）根据督导的手机号码，返回督导下的所有的店-分页；
     * @author wjk
     * @Date 2021-11-19
     */
    LayuiPageInfo getShopListByDdPhoneLayuiPage(String account, String shopName);

    /**
     * 根据店名，获取店的员工列表；
     * @author wjk
     * @Date 2021-09-15
     */
    List<AttendAuditBtyArchives> getEmployeeListByDm(String dm,String account);

    /**
     * 根据督导的手机号码，返回督导的手机号，职位，所拥有的店的汇总；
     * @author wjk
     * @Date 2021-09-16
     */
    AttendAuditBtyArchivesCountShop getShopCountShopByDdPhone(String account);

    /**
     * 查询单条数据,根据用户的id
     *
     * @author wjk
     * @Date 2021-09-16
     */
    AttendAuditBtyArchives detailById(AttendAuditBtyArchivesParam attendAuditBtyArchives);
    /**
     * 在员工表中将员工设置为店长
     *
     * @author wjk
     * @Date 2021-09-16
     */
    boolean setEmployeeToDz(AttendAuditBtyArchives attendAuditBtyArchives);

    /**
     * 根据店长的手机号码，返回店长下来自人资数据库的档案的列表；
     * @author wjk
     * @Date 2021-09-16
     */
    List<AttendAuditBtyArchives> getEmployeeListByDzPhone(String account);
    /**
     *
     * @param account
     * @param attendMonth
     * @return
     */

    public Map<String,String> intoAttendEmployeeMonthListValidationParam(String account, String attendMonth);
    /**
     * （店长创建考勤页面）根据店长的手机号码，创建该店人员的[月度]考勤信息；
     * @author wjk
     * @Date 2021-09-16
     */
    int intoAttendEmployeeMonthListByDzPhone(String account,String attendMonth);

    /**
     * （店长创建考勤页面） 根据督导的名字获取督导的信息；
     * @author wjk
     * @Date 2021-09-17
     */
    AttendAuditBtyArchives getDdInfoByName(String ddname);

    /**
     * （店长考勤修改页面+员工调店） 根据店长手机号，查询店长的运营经理，下的店的员工信息
     *
     *
     * @author wjk
     * @Date 2021-09-17
     */
    List<AttendAuditBtyArchives> getOperationsEmployeeListByDzPhone(String account,String xm);

    /**
     * （店长考勤修改页面+员工调店） 根据店长手机号，查询店长的运营经理，下的店的员工信息，增加分页接口数据
     *
     *
     * @author wjk
     * @Date 2021-11-18
     */
    LayuiPageInfo getOperationsEmployeeListByDzPhoneLayuiPage(String account, String xm);

    /**
     * 查询一条数据，根据手机号
     * @author wjk
     * @Date 2021-09-22
     */
    AttendAuditBtyArchives getOneByPhone(String account);

    /**
     * 查询一条数据，根据身份证
     * @author wjk
     * @Date 2021-11-08
     */
    AttendAuditBtyArchives getOneBySfz(String sfz);

    /**
     * 根据考勤店长手机号，未获取员工信息的原因的提示！
     * @param account
     * @param list
     * @return
     */
    Map<String,String> getEmployeeListNullProblem(String account, List<AttendAuditBtyArchives> list);
    /**
     * //需要根据编号从人事中获取数据
     * @param attendEmployeeMonthOld
     * @return
     * @author wjk
     * @Date 2021-11-08
     */
    List<AttendEmployeeMonth> getAttendEmployeeMonthAuditBtyAreaServiceByBh(AttendEmployeeMonth attendEmployeeMonthOld);

    /**
     * 获取人事中最新的数据,根据店名或者编号列表
     * @param attendAuditManagerSetResultList
     * @param dm
     * @return
     * @author wjk
     * @Date 2021-11-09
     */
    List<AttendAuditBtyArchives> getBtyArchivesListByBhListOrDm(List<AttendAuditManagerSetResult> attendAuditManagerSetResultList, String dm);

    /**
     * 查询银行卡是否有重复数据，若有重复数据， 取出重复数据的人员信息(非此员工)，
     * @param attendEmployeeMonthParam
     * @return
     * @author wjk
     * @Date 2021-12-17
     */
    List<AttendAuditBtyArchives> getListByYhk(AttendEmployeeMonthParam attendEmployeeMonthParam);


    /**
     * 根据编号查询离职人员信息表
     * @param attendAuditManagerSetResult
     * @return
     * @author wjk
     * @Date 2021-12-20
     */
    List<AttendAuditBtyArchives> getArchivesListByBh(AttendAuditManagerSetResult attendAuditManagerSetResult);
}
